Non-volatile semiconductor memory devices, particularly flash memories, are used in various applications, and a further increase in capacity is demanded. For this reason, the miniaturization has advanced at an accelerated rate, and therefore, the processing is approaching its limit. In a structure in which memory cells, circuit elements, and the like are disposed on a plane as in the current structure, the increase in capacity has to be achieved only by miniaturization, but the miniaturization has also its limit. As a means of solving this problem, a flash memory having a three-dimensional structure has been recently proposed in which the memory structure including the memory cells and select gates disposed on the plane is arranged in the vertical direction.